package com.blb.mapper;

import com.blb.entity.IoWarehouse;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.util.List;
import java.util.Map;

/**
 * <p>
 *  Mapper 接口
 * </p>
 *
 * @author HuaHao
 * @since 2019-11-16
 */
public interface IoWarehouseMapper extends BaseMapper<IoWarehouse> {

    /**
     * 得到最后的一个批次
     * @return
     */
    @Select("SELECT (CASE WHEN COUNT(batch) = 0 THEN 0 ELSE batch END) batch FROM t_io_warehouse ORDER BY batch DESC LIMIT 0,1 ")
    Integer getBatch();

    /**
     * 查找所有还没有出库的批次
     * @return
     */
    @Select("SELECT DISTINCT batch FROM t_cargo WHERE batch IS NOT NULL and company_id = #{companyId}")
    List<Integer> getAllBatch(String companyId);

    /**
     * 通过批次号查找对应的信息
     * @param outBatchNo
     * @return
     */
    @Select("SELECT * FROM t_io_warehouse WHERE batch=#{outBatchNo}")
    IoWarehouse getPNameByBatch(String outBatchNo);

    /**
     * 通过订单编号查找产品名称以及所对应的所有产品码
     * @param orderId
     * @return
     */
    List<Map<String,Object>> getPNameAndCode(String orderId);
    /**
     * 通过订单编号查找产品码的总条数
     * @param orderId
     * @return
     */
    int countIn(String orderId);

    /**
     * 通过订单编号查找商品编号，商品数量，商品名称
     * @return
     */
    @Select("SELECT p.p_name,p.p_number,o.number,o.order_id FROM t_order o LEFT JOIN t_product p ON p.id=o.product_id WHERE order_id=#{orderId}")
    Map<String,Object> getPByOrderId(String orderId);

    /**
     * 出库添加时，将货位上对应的商品编号，商品名称，批次，单号，产品码改为空，状态改为无货
     * @param cargoId
     */
    @Update("UPDATE t_cargo SET product_no=NULL,product=NULL,batch=NULL,iom_no=NULL,l_code=NULL,`status`='无货' WHERE id = #{cargoId}")
    void updateCargoNull(String cargoId);
}
